﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Dominio;
using Servicios;
namespace EstadisticaProduce.Acuicultura
{
    public partial class frmRegistroComercializacion : System.Web.UI.Page
    {

        #region Variables
        clsAcuicultura _consultas = new clsAcuicultura();
        string err_mens = string.Empty;
        #endregion
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                hdnperiodo.Value = "201203";
                hdncodestablecimiento.Value = "1";
                hdncodempresa.Value = "00001";
                hdncodregistro.Value = "0";
                hdnaccion.Value = string.Empty;
                cargaTipoEspecies();
                cargaPaises();
                cargaGrilla();
            }
        }

        private void cargaTipoEspecies()
        {

            decimal COD_TIPO_ESPECIE = -1;
            string DES_TIPO_ESPECIE = string.Empty;

            Hashtable ht = new Hashtable();
            ht.Add("cod_tipo_especie", COD_TIPO_ESPECIE);
            ht.Add("des_tipo_especie", DES_TIPO_ESPECIE);

            List<domConsultasGenerales> lst = new List<domConsultasGenerales>();
            lst = _consultas.ListaTipoEspecies(ht);
            ddlTipoEspecie.DataSource = lst;
            ddlTipoEspecie.DataTextField = "des_tipo_especie";
            ddlTipoEspecie.DataValueField = "cod_tipo_especie";
            ddlTipoEspecie.DataBind();
            Utilidades.DropDownListAnnadir(ref ddlTipoEspecie, "0", "- Seleccione", 0);

        }
        private void cargaEspecie(decimal _cod_tipo_especie)
        {
            decimal cod_especie = -1;
            decimal cod_tipo_especie = _cod_tipo_especie;
            string des_especie = string.Empty;
            string cod_empresa = hdncodempresa.Value;
            Hashtable ht = new Hashtable();
            ht.Add("cod_especie", cod_especie);
            ht.Add("cod_tipo_especie", cod_tipo_especie);
            ht.Add("des_especie", des_especie);
            ht.Add("cod_empresa", cod_empresa);

            List<domConsultasGenerales> lst = new List<domConsultasGenerales>();

            lst = _consultas.ListaEspecies(ht);
            ddlEspecie.DataSource = lst;
            ddlEspecie.DataTextField = "desespecie";
            ddlEspecie.DataValueField = "codespecie";
            ddlEspecie.DataBind();
            Utilidades.DropDownListAnnadir(ref ddlEspecie, "0", "- Seleccione", 0);
        }

        private void cargaPaises()
        {

            string COD_PAIS = "%";
            string DES_PAIS = "%";
            Hashtable ht = new Hashtable();
            ht.Add("COD_PAIS", COD_PAIS);
            ht.Add("DES_PAIS", DES_PAIS);

            List<domConsultasGenerales> lst = new List<domConsultasGenerales>();

            lst = _consultas.ListaPaises(ht);
            ddlDestino.DataSource = lst;
            ddlDestino.DataTextField = "despais";
            ddlDestino.DataValueField = "codpais";
            ddlDestino.DataBind();
            Utilidades.DropDownListAnnadir(ref ddlDestino, "0", "- Seleccione", 0);
        }

        private void limpiaFormulario()
        {
            hdnaccion.Value = string.Empty;
            hdncodregistro.Value = "0";
            txtFOB.Text = "0.00";
            txtValorNacional.Text = "0.00";
            txtVolumenExportacion.Text = "0.00";
            txtVolumenNacional.Text = "0.00";

            Utilidades.DropDownListSelectValue(ref ddlEspecie, "0");
            Utilidades.DropDownListSelectValue(ref ddlTipoEspecie, "0");
            Utilidades.DropDownListSelectValue(ref ddlDestino, "0");
        }
        private void GrabarRegistroProduccion()
        {
            Int32 iresultado = 0;
            string saccion = hdnaccion.Value;
            string COD_PERIODO = hdnperiodo.Value;
            string COD_EMPRESA = hdncodempresa.Value;
            decimal COD_REGISTROCOMERCIALIZACION = Convert.ToDecimal(hdncodregistro.Value);
            decimal COD_ESPECIE = Convert.ToDecimal(ddlEspecie.SelectedValue);
            decimal CAN_VOLUMEN_NACIONAL = Convert.ToDecimal(txtVolumenNacional.Text);
            decimal CAN_VALOR = Convert.ToDecimal(txtValorNacional.Text);
            decimal CAN_VOLUMEN_EXTRANJERO = Convert.ToDecimal(txtVolumenExportacion.Text);
            decimal CAN_FOB = Convert.ToDecimal(txtFOB.Text);
            string COD_PAIS = ddlDestino.SelectedValue;

            string USE_REG = "U09717";
            string USE_MOD = "U09717";
            try
            {
                Hashtable ht = new Hashtable();
                ht.Add("COD_REGISTROCOMERCIALIZACION", COD_REGISTROCOMERCIALIZACION);
                ht.Add("COD_PERIODO", COD_PERIODO);
                ht.Add("COD_EMPRESA", COD_EMPRESA);
                ht.Add("COD_ESPECIE", COD_ESPECIE);
                ht.Add("CAN_VOLUMEN_NACIONAL", CAN_VOLUMEN_NACIONAL);
                ht.Add("CAN_VALOR", CAN_VALOR);
                ht.Add("CAN_VOLUMEN_EXTRANJERO", CAN_VOLUMEN_EXTRANJERO);
                ht.Add("CAN_FOB", CAN_FOB);
                ht.Add("COD_PAIS", COD_PAIS);
                ht.Add("USE_REG", USE_REG);
                ht.Add("USE_MOD", USE_MOD);

                if (hdncodregistro.Value != "0" && saccion == "EDITAR")
                {
                    iresultado = _consultas.ActualizaRegistroComercializacion(ht);
                }
                else
                {
                    iresultado = _consultas.InsertaRegistroComercializacion(ht);
                }
            }
            catch (Exception ex)
            {
                err_mens = ex.Message;
                iresultado = 99;
            }
            finally
            {
                if (iresultado == 99)
                {
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "err_msg", "ShowError('" + err_mens + "');", true);
                }
                else
                {
                    limpiaFormulario();
                    cargaGrilla();
                }
            }
        }
        private void cargaFormulario(domConsultasGenerales _be)
        {
            /*
            cod_materiaprima,codperiodo,codempresa,nombrecomercial,desespeci,codespecie,canvolumen,numvolumen,valvolumen,codpuerto,despuerto,desobservacion"
             */
            txtFOB.Text = _be.can_fob.ToString();
            txtValorNacional.Text = _be.can_valor.ToString();
            txtVolumenExportacion.Text = _be.can_volumen_extranjero.ToString();
            txtVolumenNacional.Text = _be.can_volumen_nacional.ToString();

            Utilidades.DropDownListSelectValue(ref ddlTipoEspecie, _be.cod_tipo_especie.ToString());
            cargaEspecie(Convert.ToDecimal(ddlTipoEspecie.SelectedValue));
            Utilidades.DropDownListSelectValue(ref ddlEspecie, _be.codespecie.ToString());
            Utilidades.DropDownListSelectValue(ref ddlDestino, _be.codpais.ToString());

            hdnaccion.Value = "EDITAR";
            hdncodregistro.Value = _be.cod_registrocomercializacion.ToString();


        }
        private void eliminaRegistro(domConsultasGenerales _be)
        {
            decimal COD_REGISTROCOMERCIALIZACION = _be.cod_registrocomercializacion;
            Int32 iresultado = 0;
            try
            {
                Hashtable ht = new Hashtable();
                ht.Add("COD_REGISTROCOMERCIALIZACION", COD_REGISTROCOMERCIALIZACION);

                iresultado = _consultas.EliminaRegistroComercializacion(ht);
            }
            catch (Exception ex)
            {
                err_mens = ex.Message;
                iresultado = 99;
            }
            finally
            {
                if (iresultado == 99)
                {
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "err_msg", "ShowError('" + err_mens + "');", true);
                }
                else
                {
                    err_mens = "Se eliminó el registro correctamente";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "err_msg", "ShowError('" + err_mens + "');", true);
                    limpiaFormulario();
                    cargaGrilla();
                }
            }
        }
        private void muestraPnlMensaje(string _smens, Int32 _iopcion)
        {
            if (_iopcion == 1)
            {
                pnlMensaje.Visible = true;
                lblMensaje.Text = _smens;
            }
            else
            {
                pnlMensaje.Visible = false;
                lblMensaje.Text = string.Empty;
            }
        }
        private void cargaGrilla()
        {
            try
            {
                decimal COD_REGISTROCOMERCIALIZACION = -1;
                string COD_EMPRESA = hdncodempresa.Value;
                string COD_PERIODO = hdnperiodo.Value;
                Hashtable ht = new Hashtable();
                ht.Add("COD_REGISTROCOMERCIALIZACION", COD_REGISTROCOMERCIALIZACION);
                ht.Add("COD_EMPRESA", COD_EMPRESA);
                ht.Add("COD_PERIODO", COD_PERIODO);

                List<domConsultasGenerales> lst = new List<domConsultasGenerales>();
                lst = _consultas.ListaRegistroComercializacion(ht);

                gvRegistro.DataSource = lst;
                gvRegistro.DataBind();
            }
            catch (Exception ex)
            {
                err_mens = "Error al cargar grilla:" + ex.Message;
                muestraPnlMensaje(err_mens, 1);
            }
            finally
            {
                muestraPnlMensaje(string.Empty, -1);
            }
        }
        protected void ddlTipoEspecie_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                cargaEspecie(Convert.ToDecimal(ddlTipoEspecie.SelectedValue));
            }
            catch (Exception ex) { }
        }

        protected void gvRegistro_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            try
            {
                if (e.CommandName == "x_edit" || e.CommandName == "x_delete")
                {
                    GridViewRow row = (GridViewRow)((Control)e.CommandSource).Parent.Parent;
                    int Index = row.RowIndex;

                    if (e.CommandName == "x_edit")
                    {
                        /*
                        cod_registrocomercializacion,codperiodo,codempresa,nombrecomercial,cod_tipo_especie,
                         * des_tipo_especie,desespecie,codespecie,
                         * can_volumen_nacional,can_valor,can_volumen_extranjero,can_fob,cod_pais,des_pais
                         */
                        domConsultasGenerales be = new domConsultasGenerales();
                        be.cod_registrocomercializacion = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["cod_registrocomercializacion"]);
                        be.codperiodo = gvRegistro.DataKeys[Index].Values["codperiodo"].ToString();
                        be.codempresa = gvRegistro.DataKeys[Index].Values["codempresa"].ToString();
                        be.codespecie = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["codespecie"]);
                        be.cod_tipo_especie = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["cod_tipo_especie"]);
                        be.can_volumen_nacional = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["can_volumen_nacional"]);
                        be.can_valor = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["can_valor"]);
                        be.can_volumen_extranjero = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["can_volumen_extranjero"]);
                        be.can_fob = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["can_fob"]);
                        be.codpais = gvRegistro.DataKeys[Index].Values["codpais"].ToString();

                        limpiaFormulario();
                        cargaFormulario(be);
                    }
                    else
                    {
                        domConsultasGenerales be = new domConsultasGenerales();
                        be.cod_registrocomercializacion = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["cod_registrocomercializacion"]);

                        eliminaRegistro(be);
                    }
                }
            }
            catch (Exception ex)
            {
                err_mens = ex.StackTrace.ToString();
            }
        }

        protected void btnGrabar_Click(object sender, EventArgs e)
        {
            try 
            {
                GrabarRegistroProduccion();
            }
            catch (Exception ex) { }
        }

        protected void btnLimpia_Click(object sender, EventArgs e)
        {
            limpiaFormulario();
        }
    }
}